/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ar.com.s21.poo.controller;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 *
 * @author pgomez
 */
public class AplicacionControlador {

    private final static String FORMATO_FECHA = "dd-MM-YYYY";

    /**
     * Este metodo realiza el envió de email mediante correo de gmail
     * al usuario que solicita una nueva clave
     * @param usuario
     * @param email
     * @param password
     */
    public void enviarEmail(String usuario, String email, String password) {
        Properties props = new Properties();
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.class",
                "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "465");

        Session session = Session.getDefaultInstance(props,
                new javax.mail.Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("fedesardo", "feditus$03");
            }
        });

        try {

            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("p_gomez88@gmail.com"));
            message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse("fedesardo@gmail.com"));
            message.setSubject("GESTIONAR - RECUPERACION DE PASSWORD");
            message.setText("Estimado usuario: " + usuario
                    + "\n\n Su nueva clave de registrarse al sistema"
                    + "es:" + password);

            Transport.send(message);

            System.out.println("Done");

        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * Calcula el numero de factura mediante Math.random
     * @return numero de factura aleatorio
     */
    public String calcularNroFactura() {
        return String.valueOf(0 + (int) (Math.random() * 10000));
    }

    /**
     * Este metodo retorna la fecha de hoy en forma de string con formato dd/MM/YYYY
     * @return la fecha formateada a dd/MM/YYYY
     */
    public String calcularFecha() {

        Calendar c = Calendar.getInstance();
        Date today = c.getTime();
        SimpleDateFormat format = new SimpleDateFormat(FORMATO_FECHA);
        return format.format(today);

    }

    /**
     *
     * @param productoSeleccionado
     * @return
     */
    public String getCodigoProducto(String productoSeleccionado) {

        String[] parts = productoSeleccionado.split("-");
        return parts[0];
    }
}
